/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entities;

import Connection.Koneksi;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Tea-Nose
 */
public class Sewa {

    private String no_faktur;
    private String nama_penyewa;
    private String alamat_penyewa;
    private String no_telp_penyewa;
    private long denda = 0;
    private long uang_sewa;
    private String tanggal_sewa;
    private String tanggal_kembali;
    private String no_Polisi;
    private String vKeterlambatan;

    /**
     * @return the no_faktur
     */
    public String getNo_faktur() {
        return no_faktur;
    }

    /**
     * @param no_faktur the no_faktur to set
     */
    public void setNo_faktur(String no_faktur) {
        this.no_faktur = no_faktur;
    }

    /**
     * @return the nama_penyewa
     */
    public String getNama_penyewa() {
        return nama_penyewa;
    }

    /**
     * @param nama_penyewa the nama_penyewa to set
     */
    public void setNama_penyewa(String nama_penyewa) throws Exception {
        String namaPtrn = "[a-zA-Z ]*";
        if (nama_penyewa.matches(namaPtrn)) {
            this.nama_penyewa = nama_penyewa;
        }else{
            throw new Exception("Format nama salah");
        }


    }

    /**
     * @return the alamat_penyewa
     */
    public String getAlamat_penyewa() {
        return alamat_penyewa;
    }

    /**
     * @param alamat_penyewa the alamat_penyewa to set
     */
    public void setAlamat_penyewa(String alamat_penyewa) {
        this.alamat_penyewa = alamat_penyewa;
    }

    /**
     * @return the no_telp_penyewa
     */
    public String getNo_telp_penyewa() {
        return no_telp_penyewa;
    }

    /**
     * @param no_telp_penyewa the no_telp_penyewa to set
     */
    public void setNo_telp_penyewa(String no_telp_penyewa) {
        this.no_telp_penyewa = no_telp_penyewa;
    }

    /**
     * @return the denda
     */
    public long getDenda() {
        return denda;
    }

    /**
     * @param denda the denda to set
     */
    public void setDenda(long denda) {
        this.denda = denda;
    }

    /**
     * @return the uang_sewa
     */
    public long getUang_sewa() {
        return uang_sewa;
    }

    /**
     * @param uang_sewa the uang_sewa to set
     */
    public void setUang_sewa(long uang_sewa) {
        this.uang_sewa = uang_sewa;
    }

    /**
     * @return the tanggal_sewa
     */
    public String getTanggal_sewa() {
        return tanggal_sewa;
    }

    /**
     * @param tanggal_sewa the tanggal_sewa to set
     */
    public void setTanggal_sewa(String tanggal_sewa) {
        this.tanggal_sewa = tanggal_sewa;
    }

    /**
     * @return the tanggal_kembali
     */
    public String getTanggal_kembali() {
        return tanggal_kembali;
    }

    /**
     * @param tanggal_kembali the tanggal_kembali to set
     */
    public void setTanggal_kembali(String tanggal_kembali) {
        this.tanggal_kembali = tanggal_kembali;
    }

    public void insertSewa() {
        try {
            String query = "INSERT INTO SEWA(no_faktur,nama_penyewa,alamat_penyewa,no_telp_penyewa,tanggal_sewa,uang_sewa,tanggal_kembali,no_polisi,denda) VALUES('"
                    + getNo_faktur() + "','" + getNama_penyewa() + "','" + getAlamat_penyewa() + "','" + getNo_telp_penyewa() + "','"
                    + getTanggal_sewa() + "','" + getUang_sewa() + "','" + getTanggal_kembali() + "','" + getNo_Polisi() + "','" + -1 + "')";
            Koneksi.execute(query);
        } catch (SQLException ex) {
            Logger.getLogger(Sewa.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void kembaliSewa(int biayaSewa, String noPol) {
        try {
            String query = "UPDATE sewa set denda='" + biayaSewa + "' where no_faktur ='" + noPol + "'";
            Koneksi.updateData(query);
        } catch (SQLException ex) {
            Logger.getLogger(Servis.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * @return the no_Polisi
     */
    public String getNo_Polisi() {
        return no_Polisi;
    }

    /**
     * @param no_Polisi the no_Polisi to set
     */
    public void setNo_Polisi(String no_Polisi) {
        this.no_Polisi = no_Polisi;
    }

    public String fakturSewa() throws SQLException {

        try {
            String query = "select substr(to_char(substr(max(no_faktur),3)+1,'009'),2) from sewa";
            ResultSet rs = Koneksi.select(query);
            while (rs.next()) {
                if (rs.getString(1) == null) {
                    return "SW001";
                }
                return "SW" + rs.getString(1);
            }

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "ok");
        }

        return "SW001";
    }

    public String getvKeterlambatan() {
        return vKeterlambatan;
    }

    public void setvKeterlambatan(String vKeterlambatan) {
        this.vKeterlambatan = vKeterlambatan;
    }
}
